package org.jsbd.boss.service;

import java.util.List;
import java.util.Map;

import org.jsbd.boss.common.DataGridModel;
import org.jsbd.boss.domian.InviteCodeBean;
import org.jsbd.boss.domian.channel.InviteConfig;
import org.jsbd.boss.domian.channel.InviteConfigProbability;

public interface IInviteCodeService {

	public void saveInviteCode(InviteCodeBean inviteCode);

	public void updateInviteCode(InviteCodeBean inviteCode);

	public void updateInviteCode(List<InviteCodeBean> inviteCodeList);

	/**
	 * selectInviteCode:TODO 请描述该方法是做什么用途的
	 * @author <a href="mailto:xupengcheng@zhexinit.com" >徐鹏程</a>
	 * @param mark
	 * @return
	 */
	public String selectInviteCode(String mark);
	
	/**
	 * 获取邀请码配置列表
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param page 分页信息
	 * @param inviteConfig 查询信息
	 * @return
	 */
	public Map<String, Object> getConfigList(DataGridModel page, InviteConfig inviteConfig);

	/**
	 * 新增邀请码配置
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param inviteConfig 保存对象
	 * @return
	 */
	public void add(InviteConfig inviteConfig);
	
	/**
	 * 获取邀请码配置
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param id 
	 * @return
	 */
	public InviteConfig getById(Integer id);

	/**
	 * 更新邀请码配置
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param inviteConfig
	 * @return
	 */
	public void update(InviteConfig inviteConfig);

	/**
	 * 删除
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param id
	 * @return
	 */
	public void delete(Integer id);

	/**
	 * 获取邀请码配置
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param mark
	 * @return
	 */
	public InviteConfig getByMark(String mark);

	
	/**
	 * mark是否存在
	 * @author <a href="mailto:wangjunbiao@zhexinit.com" >王俊标</a>
	 * @param mark
	 * @return
	 */
	public boolean hasMark(String mark);

	public void saveInviteCodeNew(InviteCodeBean inviteCodeBean);
	
	/**
	 * 保存概率
	 * @param list
	 */
	public void saveInviteCodeProbability(List<InviteConfigProbability> list);

	/**
	 * 获取概率
	 * @param list
	 */
	public List<InviteConfigProbability> getInviteCodeProbability(Integer id);
	
	/**
	 * 删除概率
	 * @param id
	 */
	public void deleteInviteCodeProbability(Integer id);
	
	/**
	 * 更新totalCountAvg
	 * @param inviteId
	 * @param totalCountAvg
	 */
	public void updateTotalCountAvg(Integer inviteId, Float totalCountAvg);

}
